"""统计单词
读出文本文件 `A day to remmeber.txt` 中所有英文单词，生成单词表，写入文本文件 `words.txt`。

### 要求

1. 单词表按字母序排序
2. 每行一个单词，格式是：单词 出现次数
3. 将生成的单词表保存到一个文本文件中。

### 注意

过滤掉标点符号
"""

import re
import string

# 字典
words = {}

# 读文本文件
with open('A day to remember.txt', 'r') as f:
    for line in f:
        
        #将所有标点符号替换成空格
        line = re.sub(f'[{string.punctuation}]', ' ', line)
        
        # 将每一行按空白切片成单词
        for word in line.split():
            word = word.lower()

            # 字典的使用
            if word in words:
                words[word] += 1
            else:
                words[word] = 1

# 把字典转换为列表
wlist = list(words.items())

# 列表排序
wlist.sort()

print(f"单词数：{len(wlist)}\n\n单词 计数")
for x, y in wlist:
    print(x, y)

# 将单词表写入文本文件
with open('words.txt', 'w') as f:
    for x, y in wlist:
        f.write(f"{x} {y}\n")
